iT邦幫忙

2023 iThome 鐵人賽

DAY 2
2
自我挑戰組

用GPT 撰寫選股策略系列 第 2

如何使用 Pinescript 創建簡單的移動平均線策略 - Day 2

  • 分享至 

  • xImage
  •  

如何使用 Pinescript 創建簡單的移動平均線策略 - Day 2

簡介

今天教學如何使用 Pinescript 創建簡單的移動平均線策略

策略

移動平均線(Moving Average,簡稱MA)是一種常用的技術分析工具,用於平滑股價或其他時間序列資料,以識別趨勢的變化。它通常通過計算一段特定時間內的平均值,來消除瞬間波動,使得趨勢更容易被辨識。移動平均線的主要目的是減少噪音,揭示出資料的長期趨勢和方向。

策略介紹

舉例來說,假設我們有一支股票的每日收盤價數據,並且想要分析其趨勢變化。我們可以計算出20日移動平均線,這表示每個點都是過去20個交易日的收盤價的平均值。

假設過去20天的收盤價分別是:

Day 1: 50
Day 2: 52
...
Day 19: 48
Day 20: 51

則第20天的20日移動平均線值將是(50 + 52 + ... + 48 + 51) / 20 = 50.45。

這樣,我們就得到了一條移動平均線,它代表了過去20天的股價平均走勢。如果股價持續位於移動平均線之上,這可能暗示著一個上升趨勢。相反,如果股價持續位於移動平均線之下,這可能意味著下降趨勢。移動平均線的交叉(如股價穿越移動平均線)也可能代表著趨勢的轉折點。

總之,移動平均線是一種用於平滑時間序列資料、識別趨勢變化的工具。它對於技術分析和制定交易策略非常有用,能夠幫助交易者更好地理解資產價格的長期走勢。

PineScript 實作

//@version=4
strategy("Moving Average Crossover Strategy", overlay=true)

// 輸入移動平均線的長度
fast_length = input(10, title="Fast MA Length")
slow_length = input(20, title="Slow MA Length")

// 計算移動平均線
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)

// 繪製移動平均線
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.orange, title="Slow MA")

// 設置交易信號
buy_signal = crossover(fast_ma, slow_ma)
sell_signal = crossunder(fast_ma, slow_ma)

// 定義交易操作
strategy.entry("Buy", strategy.long, when = buy_signal)
strategy.close("Buy", when = sell_signal)

在這個範例中,我們創建了一個移動平均線交易策略,使用了兩條移動平均線:一條快速移動平均線(fast_ma)和一條慢速移動平均線(slow_ma)。當快速移動平均線上穿慢速移動平均線時,我們生成買入信號;當快速移動平均線下穿慢速移動平均線時,我們平倉。

這個策略是一個簡單的趨勢追蹤策略,當快速移動平均線趨於上升且穿過慢速移動平均線時,可能代表著趨勢的向上轉折,可以考慮進行買入操作。當快速移動平均線趨於下降且穿過慢速移動平均線時,可能代表著趨勢的向下轉折,可以考慮平倉。

然而,這只是一個基本的範例。實際上,交易策略需要考慮更多因素,包括風險管理、進一步的過濾條件以及其他技術指標的結合。在實際應用中,應該仔細測試並根據當下需求進行調整。

回測結果

執行圖表

執行結果分析

以下為使用

本金為 100 USD

在Trading View 進行回測結果

淨利和損益比例(Net Profit and P/L Ratio): 總淨利為152.03美元,佔投資本金的0.15%。這表示在交易期間獲得了一些盈利,但盈利幅度相對較小。

毛利和毛損比例(Gross Profit and Gross Loss Ratio): 總毛利為262.13美元,佔總毛損的0.26%。這表明在獲利交易方面的表現相對較好。

最大交易獲利和最大交易虧損(Maximum Trade Profit and Maximum Trade Loss):
最大的獲利交易為170.60美元,而最大虧損交易為44.63美元。這可能反映出能夠捕獲到一些較大的趨勢,但在某些交易中也可能承受一些較大的虧損。

購買和保留退貨(Buy and Hold Return): 如果持有投資組合中的所有資產,總回報率將為144,122.93%。這可能是與交易策略相比的一個參考點。

夏普比率和Sortino比率: 夏普比率用於衡量風險調整後的回報率,而Sortino比率則專注於下行風險。在數據中,這兩個指標的值均為負數,可能表示回報相對於承受的風險不夠理想。

勝率和平均成交:勝率為41.52%,即獲利交易佔總交易次數的比例。平均成交為0.55美元,這是每筆交易的平均盈利或虧損。

交易次數和持倉時間:總共進行了277次交易,並且平均持倉時間約為23根K線。

使用參數

FAST MA length: 這是快速移動平均線的長度。使用10作為快速移動平均線的計算長度。這意味著計算快速移動平均線時,會考慮最近的10個數據點的平均值。

SLOW MA length: 這是慢速移動平均線的長度。使用了20作為慢速移動平均線的計算長度。這表示計算慢速移動平均線時,會考慮最近的20個數據點的平均值。

交易策略中使用這兩個不同長度的移動平均線,是為了捕捉不同時間尺度的趨勢變化。快速移動平均線能夠更敏感地反應近期價格變動,而慢速移動平均線則更加平滑,能夠反映長期趨勢的變化。當快速移動平均線穿過慢速移動平均線時,可能代表著趨勢的變化,這是您策略中的交易信號。

請注意,選擇移動平均線的長度是一個關鍵的參數,它會影響到策略的表現。較短的移動平均線能夠更快地響應價格變動,但可能會更容易受到噪音干擾;較長的移動平均線能夠平滑趨勢,但可能會較遲鈍地反應價格變動。根據市場情況和交易目標,可以調整這些參數以獲得更好的策略效果。

調整參數

本金為 100 USD

當把 FAST MA LENGTH 調整為 15

當把 SLOW MA LENGTH 調整為 37

淨利和損益比例(Net Profit and P/L Ratio): 總净利润为158.81美元,占投资本金的0.16%。这表明在交易期间持续获得一些利润,但是利润幅度相对较小。

毛利和毛損比例(Gross Profit and Gross Loss Ratio): 總毛利润为206.72美元,占总毛亏损的0.21%。这表示您在盈利交易方面表现较好。

最大交易獲利和最大交易虧損(Maximum Trade Profit and Maximum Trade Loss): 最大盈利交易为179.75美元,最大亏损交易为24.63美元。这可能反映出能够捕捉到一些较大的趋势,但在某些交易中也可能承受一些较大的虧損。

購買和保留退貨(Buy and Hold Return): 如果持有投资组合中的所有资产,總回報率将为156,099.94%。这可能是交易策略相比的一個參考點。

夏普比率和Sortino比率: 夏普比率和Sortino比率仍然是負數,这可能表明回報相對於承擔的風險不够理想。需要近一步评估風險管理策略。

勝率和平均成交:勝率为46.04%,平均成交为1.14美元。表明交易策略在盈利和亏损交易之间保持一定的平衡。

交易次数和持倉时间:總共進行了139次交易,平均持倉時間約為46根K線。

image alt

結論

透過快與慢移動平均,我們預估了股價可能會移動的趨勢來加以操作


上一篇
用 chatgpt 學習使用 pinescript 撰寫交易策略 - Day 1
下一篇
用 chatgpt 學習使用 pinescript 撰寫交易策略 - Day 3
系列文
用GPT 撰寫選股策略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
sponge1220
iT邦新手 4 級 ‧ 2023-09-04 21:23:32

河河河河河

0
孤獨一隻雞
iT邦研究生 5 級 ‧ 2023-09-05 17:37:52

河河河河河

0
noah
iT邦新手 4 級 ‧ 2023-09-12 16:17:21

河河河河河

我要留言

立即登入留言